package com.ruoyi.repayment.controller;


//import com.service.RedisService;
//import com.util.DateFormatUtils;
//import com.entity.CmsUser;
//import com.manager.CmsUserMng;
//import com.enums.ChatTypeEnum;
//import com.websocket.Constants;
//import com.websocket.dto.ChatDTO;
//import com.websocket.dto.ChatUserDTO;

import javax.websocket.server.ServerEndpoint;

/**
 * @author 。
 */
@ServerEndpoint(value = "/chat_websocket")
public class ChatWebSocket {

//    private RedisService redisService;
//
//    private CmsUserMng cmsUserMng;
//
//
//    public ChatWebSocket() {
//        WebApplicationContext webctx = ContextLoader.getCurrentWebApplicationContext();
//        this.redisService = (RedisService) webctx.getBean("redisService");
//        this.cmsUserMng = (CmsUserMng) webctx.getBean("cmsUserMng");
//    }
//
//    /**
//     * 存储用户id
//     */
//    public static Map userMap = new HashMap();
//
//
//    /**
//     * 聊天记录
//     */
//    public static Map chatRecordMap = new HashMap();
//
//
//    /**
//     * 管理员列表session
//     */
//    public static Session adminSession;
//
//
//    /**
//     * 创建
//     *
//     * @param session
//     */
//    @OnOpen
//    public void onOpen(Session session) {
//        Map<String, List<String>> requestParameterMap = session.getRequestParameterMap();
//        List<String> strs = requestParameterMap.get("msg");
//        if (strs != null && strs.size() > 0) {
//            String json = strs.get(0);
//            //从聊天集中去掉该集合
//            JSONObject object = JSONObject.fromObject(json);
//            String userId = object.getString("user_id");
//            String chatType = object.getString("chat_type");
//
//            /*--------------管理员列表-----------------------*/
//            if (ChatTypeEnum.adminListChatType.getKey().equalsIgnoreCase(chatType)) {
//                adminSession = session;
//                List list = getUserList(userMap);
//                //遍历所有聊天用户集合的id
//                chat_list_show(adminSession, list);
//                return;
//
//            }
//
//            /*--------------管理员聊天框打开-----------------------*/
//            if (ChatTypeEnum.adminChatType.getKey().equalsIgnoreCase(chatType)) {
//                //从集合中获取用户对应的数据加入信息列表中
//                List sessions = (List) userMap.get(userId);
//                if (sessions == null) {
//                    sessions = new ArrayList();
//                }
//                sessions.add(session);
//                userMap.put(userId, sessions);
//
//
//            }
//
//            /*--------------用户聊天框打开-----------------------*/
//            if (ChatTypeEnum.userChatType.getKey().equalsIgnoreCase(chatType)) {
//                //判断是否建立聊天通道
//                List sessions = (List) userMap.get(userId);
//                if (sessions == null) {
//                    sessions = new ArrayList();
//                }
//                sessions.add(session);
//                userMap.put(userId, sessions);
//
//
//
//            }
//
//            //聊天记录信息存放
//            List chatRecords = (List) chatRecordMap.get(userId);
//            if (chatRecords != null) {
//                chat((List<Session>) userMap.get(userId), chatRecords);
//            }
//
//
//        }
//    }
//
//    /**
//     * 发送消息
//     *
//     * @param json {userId:\'\',message:\'\',create_time:\'\',create_date:\'\',chat_type:\'admin_list/admin_chat/user_chat\'}
//     *             admin_list:表示客服列表数据请求
//     *             admin_chat:表示客服回复页面请求
//     *             user_chat表示用户消息页面请求
//     *
//     *
//     * @throws Exception
//     */
//    @OnMessage
//    public void onMessage(Session session, String json) {
//        JSONObject object = JSONObject.fromObject(json);
//        //用户ID
//        String userId = object.getString("user_id");
//        //用户发送的信息
//        String message = object.getString("message");
//        //请求类型
//        String chatType = object.getString("chat_type");
//
//
//
//        /*--------------管理员聊天-----------------------*/
//        if (ChatTypeEnum.adminChatType.getKey().equalsIgnoreCase(chatType)) {
//            //把管理员加入用户建立的聊天管道中
//
//            //用户聊天
//            //封装请求参数，时间为当前时间
//            ChatDTO chatDTO = new ChatDTO();
//            //userId=0表示是客服的回复
//            chatDTO.setUserId("0")
//                    .setMessage(message)
//                    .setCreateDate(DateFormatUtils.formatDate(new Date()))
//                    .setCreateTime(DateFormatUtils.formatDateTime(new Date()));
//            //聊天记录信息存放
//            List chatRecords = (List) chatRecordMap.get(userId);
//            if (chatRecords == null) {
//                chatRecords = new ArrayList();
//            }
//            chatRecords.add(JSONObject.fromObject(chatDTO));
//            chatRecordMap.put(userId, chatRecords);
//            chat((List<Session>) userMap.get(userId), chatRecords);
//
//        }
//        /*--------------用户聊天-----------------------*/
//        if (ChatTypeEnum.userChatType.getKey().equalsIgnoreCase(chatType)) {
//
//            //封装请求参数，时间为当前时间
//            ChatDTO chatDTO = new ChatDTO();
//            chatDTO.setUserId(userId)
//                    .setMessage(message)
//                    .setCreateDate(DateFormatUtils.formatDate(new Date()))
//                    .setCreateTime(DateFormatUtils.formatDateTime(new Date()));
//            String key = chatDTO.getUserId();
//
//            //聊天记录信息存放
//            List chatRecords = (List) chatRecordMap.get(key);
//            if (chatRecords == null) {
//                chatRecords = new ArrayList();
//            }
//            chatRecords.add(JSONObject.fromObject(chatDTO));
//            chatRecordMap.put(key, chatRecords);
//            chat((List<Session>) userMap.get(key), chatRecords);
//            if (adminSession != null) {
//                List list = getUserList(userMap);
//                //遍历所有聊天用户集合的id
//                chat_list_show(adminSession, list);
//
//            }
//        }
//
//
//
//
//    }
//
//    /**
//     * 关闭
//     */
//    @OnClose
//    public void onClose(Session session) {
//
//        Map<String, List<String>> requestParameterMap = session.getRequestParameterMap();
//        List<String> strs = requestParameterMap.get("msg");
//        if (strs != null && strs.size() > 0) {
//            String json = strs.get(0);
//            JSONObject object = JSONObject.fromObject(json);
//            String userId = object.getString("user_id");
//            String chatType = object.getString("chat_type");
//
//
//            /*--------------管理员聊天框关闭-----------------------*/
//            if (ChatTypeEnum.adminChatType.getKey().equalsIgnoreCase(chatType)) {
//
//
//
//
//            }
//
//            /*--------------用户聊天框关闭-----------------------*/
//            if (ChatTypeEnum.userChatType.getKey().equalsIgnoreCase(chatType)) {
//
//
//
//            }
//
//
//        }
//
//    }
//
//
//    /**
//     * 发生错误
//     *
//     * @param session
//     * @param error
//     */
//    @OnError
//    public void onError(Session session, Throwable error) {
//        System.out.println("发生错误");
//        error.printStackTrace();
//    }
//
//    /**
//     * 消息广播
//     *
//     * @param sessions
//     * @param messages
//     */
//    public void chat(List<Session> sessions, List messages) {
//        for (Iterator it = sessions.iterator(); it.hasNext(); ) {
//            Session session = (Session) it.next();
//            try {
//                if (session.isOpen()) {
//                    //当当前会话没有被关闭 发送消息
//                    session.getBasicRemote().sendText(JSONArray.fromObject(messages) + "");
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//    }
//
//    /**
//     * 聊天列表显示
//     */
//    public void chat_list_show(Session session, List list) {
//        try {
//            if (session.isOpen()) {
//                //当当前会话没有被关闭 发送消息
//                session.getBasicRemote().sendText(JSONArray.fromObject(list) + "");
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//    }
//
//    /**
//     * 通过id获取用户数据
//     *
//     * @return
//     */
//    public List getUserList(Map userMap) {
//        List list = new ArrayList();
//        for (Object str : userMap.keySet()) {
//            ChatUserDTO chatUserDTO = new ChatUserDTO();
//            CmsUser user = cmsUserMng.findById(Integer.valueOf(str + ""));
//            list.add(chatUserDTO.convertUser(user));
//        }
//        return list;
//    }


}
